home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / text / edit / vim60src.lha / Vim / vim60 / src / ex_cmds.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-08  |  33.2 KB  |  925 lines

  1. /* vi:set ts=8 sts=4 sw=4:
  2.  *
  3.  * VIM - Vi IMproved    by Bram Moolenaar
  4.  *
  5.  * Do ":help uganda"  in Vim to read copying and usage conditions.
  6.  * Do ":help credits" in Vim to see a list of people who contributed.
  7.  */
  8.  
  9. /*
  10.  * This file defines the Ex commands.
  11.  * When DO_DECLARE_EXCMD is defined, the table with ex command names and
  12.  * options results.
  13.  * When DO_DECLARE_EXCMD is NOT defined, the enum with all the Ex commands
  14.  * results.
  15.  * This clever trick was invented by Ron Aaron.
  16.  */
  17.  
  18. /*
  19.  * When adding an Ex command:
  20.  * 1. Add an entry in the table below.  Keep it sorted on the shortest
  21.  *    version of the command name that works.  If it doesn't start with a
  22.  *    lower case letter, add it at the end.
  23.  * 2. Add a "case: CMD_xxx" in the big switch in ex_docmd.c.
  24.  * 3. Add an entry in the index for Ex commands at ":help ex-cmd-index".
  25.  * 4. Add documentation in ../doc/xxx.txt.  Add a tag for both the short and
  26.  *    long name of the command.
  27.  */
  28.  
  29. #ifdef RANGE
  30. # undef RANGE            /* SASC on Amiga defines it */
  31. #endif
  32.  
  33. #define RANGE        0x001    /* allow a linespecs */
  34. #define BANG        0x002    /* allow a ! after the command name */
  35. #define EXTRA        0x004    /* allow extra args after command name */
  36. #define XFILE        0x008    /* expand wildcards in extra part */
  37. #define NOSPC        0x010    /* no spaces allowed in the extra part */
  38. #define    DFLALL        0x020    /* default file range is 1,$ */
  39. #define WHOLEFOLD    0x040    /* extend range to include whole fold also
  40.                    when less than two numbers given */
  41. #define NEEDARG        0x080    /* argument required */
  42. #define TRLBAR        0x100    /* check for trailing vertical bar */
  43. #define REGSTR        0x200    /* allow "x for register designation */
  44. #define COUNT        0x400    /* allow count in argument, after command */
  45. #define NOTRLCOM    0x800    /* no trailing comment allowed */
  46. #define ZEROR           0x1000    /* zero line number allowed */
  47. #define USECTRLV       0x2000    /* do not remove CTRL-V from argument */
  48. #define NOTADR           0x4000    /* number before command is not an address */
  49. #define EDITCMD           0x8000    /* allow "+command" argument */
  50. #define BUFNAME          0x10000L    /* accepts buffer name */
  51. #define BUFUNL          0x20000L    /* accepts unlisted buffer too */
  52. #define ARGOPT          0x40000L    /* allow "++opt=val" argument */
  53. #define SBOXOK          0x80000L    /* allowed in the sandbox */
  54. #define CMDWIN         0x100000L    /* allowed in cmdline window */
  55. #define MODIFY       0x200000L  /* forbidden in non-'modifiable' buffer */
  56. #define FILES    (XFILE | EXTRA)    /* multiple extra files allowed */
  57. #define WORD1    (EXTRA | NOSPC)    /* one extra word allowed */
  58. #define FILE1    (FILES | NOSPC)    /* 1 file allowed, defaults to current file */
  59.  
  60. #ifndef DO_DECLARE_EXCMD
  61. typedef struct exarg exarg_T;
  62. #endif
  63.  
  64. /*
  65.  * This array maps ex command names to command codes.
  66.  * The order in which command names are listed below is significant --
  67.  * ambiguous abbreviations are always resolved to be the first possible match
  68.  * (e.g. "r" is taken to mean "read", not "rewind", because "read" comes
  69.  * before "rewind").
  70.  * Not supported commands are included to avoid ambiguities.
  71.  */
  72. #ifdef EX
  73. # undef EX        /* just in case */
  74. #endif
  75. #ifdef DO_DECLARE_EXCMD
  76. # define EX(a, b, c, d)  {(char_u *)b, c, d}
  77.  
  78. typedef void (*ex_func_T) __ARGS((exarg_T *eap));
  79.  
  80. static struct cmdname
  81. {
  82.     char_u    *cmd_name;    /* name of the command */
  83.     ex_func_T   cmd_func;    /* function for this command */
  84.     long_u    cmd_argt;    /* flags declared above */
  85. }
  86. # if defined(FEAT_GUI_W16)
  87. _far
  88. # endif
  89. cmdnames[] =
  90. #else
  91. # define EX(a, b, c, d)  a
  92. enum CMD_index
  93. #endif
  94. {
  95. EX(CMD_append,        "append",    ex_append,
  96.             BANG|RANGE|ZEROR|TRLBAR|CMDWIN|MODIFY),
  97. EX(CMD_abbreviate,    "abbreviate",    ex_abbreviate,
  98.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  99. EX(CMD_abclear,        "abclear",    ex_abclear,
  100.             EXTRA|TRLBAR|CMDWIN),
  101. EX(CMD_aboveleft,    "aboveleft",    ex_wrongmodifier,
  102.             NEEDARG|EXTRA|NOTRLCOM),
  103. EX(CMD_all,        "all",        ex_all,
  104.             RANGE|NOTADR|COUNT|TRLBAR),
  105. EX(CMD_amenu,        "amenu",    ex_menu,
  106.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  107. EX(CMD_anoremenu,    "anoremenu",    ex_menu,
  108.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  109. EX(CMD_args,        "args",        ex_args,
  110.             BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
  111. EX(CMD_argadd,        "argadd",    ex_argadd,
  112.             BANG|NEEDARG|RANGE|NOTADR|COUNT|FILES|TRLBAR),
  113. EX(CMD_argdelete,    "argdelete",    ex_argdelete,
  114.             BANG|RANGE|NOTADR|COUNT|FILES|TRLBAR),
  115. EX(CMD_argdo,        "argdo",    ex_listdo,
  116.             BANG|NEEDARG|EXTRA|NOTRLCOM),
  117. EX(CMD_argedit,        "argedit",    ex_argedit,
  118.             BANG|NEEDARG|RANGE|NOTADR|COUNT|FILE1|EDITCMD|TRLBAR),
  119. EX(CMD_argglobal,    "argglobal",    ex_args,
  120.             BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
  121. EX(CMD_arglocal,    "arglocal",    ex_args,
  122.             BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
  123. EX(CMD_argument,    "argument",    ex_argument,
  124.             BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
  125. EX(CMD_ascii,        "ascii",    do_ascii,
  126.             TRLBAR|CMDWIN),
  127. EX(CMD_autocmd,        "autocmd",    ex_autocmd,
  128.             BANG|EXTRA|NOTRLCOM|USECTRLV|CMDWIN),
  129. EX(CMD_augroup,        "augroup",    ex_autocmd,
  130.             BANG|WORD1|TRLBAR|CMDWIN),
  131. EX(CMD_aunmenu,        "aunmenu",    ex_menu,
  132.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  133. EX(CMD_buffer,        "buffer",    ex_buffer,
  134.             BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR),
  135. EX(CMD_bNext,        "bNext",    ex_bprevious,
  136.             BANG|RANGE|NOTADR|COUNT|TRLBAR),
  137. EX(CMD_ball,        "ball",        ex_buffer_all,
  138.             RANGE|NOTADR|COUNT|TRLBAR),
  139. EX(CMD_badd,        "badd",        ex_edit,
  140.             NEEDARG|FILE1|EDITCMD|TRLBAR|CMDWIN),
  141. EX(CMD_bdelete,        "bdelete",    ex_bunload,
  142.             BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
  143. EX(CMD_behave,        "behave",    ex_behave,
  144.             NEEDARG|WORD1|TRLBAR|CMDWIN),
  145. EX(CMD_belowright,    "belowright",    ex_wrongmodifier,
  146.             NEEDARG|EXTRA|NOTRLCOM),
  147. EX(CMD_bfirst,        "bfirst",    ex_brewind,
  148.             BANG|RANGE|NOTADR|TRLBAR),
  149. EX(CMD_blast,        "blast",    ex_blast,
  150.             BANG|RANGE|NOTADR|TRLBAR),
  151. EX(CMD_bmodified,    "bmodified",    ex_bmodified,
  152.             BANG|RANGE|NOTADR|COUNT|TRLBAR),
  153. EX(CMD_bnext,        "bnext",    ex_bnext,
  154.             BANG|RANGE|NOTADR|COUNT|TRLBAR),
  155. EX(CMD_botright,    "botright",    ex_wrongmodifier,
  156.             NEEDARG|EXTRA|NOTRLCOM),
  157. EX(CMD_bprevious,    "bprevious",    ex_bprevious,
  158.             BANG|RANGE|NOTADR|COUNT|TRLBAR),
  159. EX(CMD_brewind,        "brewind",    ex_brewind,
  160.             BANG|RANGE|NOTADR|TRLBAR),
  161. EX(CMD_break,        "break",    ex_break,
  162.             TRLBAR|SBOXOK|CMDWIN),
  163. EX(CMD_breakadd,    "breakadd",    ex_breakadd,
  164.             EXTRA|TRLBAR|CMDWIN),
  165. EX(CMD_breakdel,    "breakdel",    ex_breakdel,
  166.             EXTRA|TRLBAR|CMDWIN),
  167. EX(CMD_breaklist,    "breaklist",    ex_breaklist,
  168.             EXTRA|TRLBAR|CMDWIN),
  169. EX(CMD_browse,        "browse",    ex_wrongmodifier,
  170.             NEEDARG|EXTRA|NOTRLCOM|CMDWIN),
  171. EX(CMD_buffers,        "buffers",    buflist_list,
  172.             BANG|TRLBAR|CMDWIN),
  173. EX(CMD_bufdo,        "bufdo",    ex_listdo,
  174.             BANG|NEEDARG|EXTRA|NOTRLCOM),
  175. EX(CMD_bunload,        "bunload",    ex_bunload,
  176.             BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
  177. EX(CMD_bwipeout,    "bwipeout",    ex_bunload,
  178.             BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR),
  179. EX(CMD_change,        "change",    ex_change,
  180.             BANG|WHOLEFOLD|RANGE|COUNT|TRLBAR|CMDWIN|MODIFY),
  181. EX(CMD_cNext,        "cNext",    ex_cnext,
  182.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  183. EX(CMD_cabbrev,        "cabbrev",    ex_abbreviate,
  184.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  185. EX(CMD_cabclear,    "cabclear",    ex_abclear,
  186.             EXTRA|TRLBAR|CMDWIN),
  187. EX(CMD_call,        "call",        ex_call,
  188.             RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  189. EX(CMD_cc,        "cc",        ex_cc,
  190.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  191. EX(CMD_cclose,        "cclose",    ex_cclose,
  192.             RANGE|NOTADR|COUNT|TRLBAR),
  193. EX(CMD_cd,        "cd",        ex_cd,
  194.             FILE1|TRLBAR|CMDWIN),
  195. EX(CMD_center,        "center",    ex_align,
  196.             TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  197. EX(CMD_cfile,        "cfile",    ex_cfile,
  198.             TRLBAR|FILE1|BANG),
  199. EX(CMD_cfirst,        "cfirst",    ex_cc,
  200.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  201. EX(CMD_chdir,        "chdir",    ex_cd,
  202.             FILE1|TRLBAR|CMDWIN),
  203. EX(CMD_checkpath,    "checkpath",    ex_checkpath,
  204.             TRLBAR|BANG|CMDWIN),
  205. EX(CMD_checktime,    "checktime",    ex_checktime,
  206.             RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
  207. EX(CMD_clist,        "clist",    qf_list,
  208.             BANG|EXTRA|TRLBAR|CMDWIN),
  209. EX(CMD_clast,        "clast",    ex_cc,
  210.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  211. EX(CMD_close,        "close",    ex_close,
  212.             BANG|TRLBAR|CMDWIN),
  213. EX(CMD_cmap,        "cmap",        ex_map,
  214.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  215. EX(CMD_cmapclear,    "cmapclear",    ex_mapclear,
  216.             EXTRA|TRLBAR|CMDWIN),
  217. EX(CMD_cmenu,        "cmenu",    ex_menu,
  218.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  219. EX(CMD_cnext,        "cnext",    ex_cnext,
  220.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  221. EX(CMD_cnewer,        "cnewer",    qf_age,
  222.             RANGE|NOTADR|COUNT|TRLBAR),
  223. EX(CMD_cnfile,        "cnfile",    ex_cnext,
  224.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  225. EX(CMD_cnoremap,    "cnoremap",    ex_map,
  226.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  227. EX(CMD_cnoreabbrev,    "cnoreabbrev",    ex_abbreviate,
  228.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  229. EX(CMD_cnoremenu,    "cnoremenu",    ex_menu,
  230.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  231. EX(CMD_copy,        "copy",        ex_copymove,
  232.             RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
  233. EX(CMD_colder,        "colder",    qf_age,
  234.             RANGE|NOTADR|COUNT|TRLBAR),
  235. EX(CMD_colorscheme,    "colorscheme",    ex_colorscheme,
  236.             NEEDARG|WORD1|TRLBAR|CMDWIN),
  237. EX(CMD_command,        "command",    ex_command,
  238.             EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN),
  239. EX(CMD_comclear,    "comclear",    ex_comclear,
  240.             TRLBAR|CMDWIN),
  241. EX(CMD_compiler,    "compiler",    ex_compiler,
  242.             BANG|TRLBAR|WORD1),
  243. EX(CMD_continue,    "continue",    ex_continue,
  244.             TRLBAR|SBOXOK|CMDWIN),
  245. EX(CMD_confirm,        "confirm",    ex_wrongmodifier,
  246.             NEEDARG|EXTRA|NOTRLCOM|CMDWIN),
  247. EX(CMD_copen,        "copen",    ex_copen,
  248.             RANGE|NOTADR|COUNT|TRLBAR),
  249. EX(CMD_cprevious,    "cprevious",    ex_cnext,
  250.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  251. EX(CMD_cquit,        "cquit",    ex_cquit,
  252.             TRLBAR|BANG),
  253. EX(CMD_crewind,        "crewind",    ex_cc,
  254.             RANGE|NOTADR|COUNT|TRLBAR|BANG),
  255. EX(CMD_cscope,        "cscope",    do_cscope,
  256.             EXTRA|NOTRLCOM|SBOXOK),
  257. EX(CMD_cstag,        "cstag",    do_cstag,
  258.             BANG|TRLBAR|WORD1),
  259. EX(CMD_cunmap,        "cunmap",    ex_unmap,
  260.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  261. EX(CMD_cunabbrev,    "cunabbrev",    ex_abbreviate,
  262.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  263. EX(CMD_cunmenu,        "cunmenu",    ex_menu,
  264.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  265. EX(CMD_cwindow,        "cwindow",    ex_cwindow,
  266.             RANGE|NOTADR|COUNT|TRLBAR),
  267. EX(CMD_delete,        "delete",    ex_operators,
  268.             RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY),
  269. EX(CMD_debug,        "debug",    ex_debug,
  270.             NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  271. EX(CMD_delcommand,    "delcommand",    ex_delcommand,
  272.             NEEDARG|WORD1|TRLBAR|CMDWIN),
  273. EX(CMD_delfunction,    "delfunction",    ex_delfunction,
  274.             NEEDARG|WORD1|TRLBAR|CMDWIN),
  275. EX(CMD_display,        "display",    ex_display,
  276.             EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
  277. EX(CMD_diffupdate,    "diffupdate",    ex_diffupdate,
  278.             TRLBAR),
  279. EX(CMD_diffget,        "diffget",    ex_diffgetput,
  280.             RANGE|EXTRA|TRLBAR|MODIFY),
  281. EX(CMD_diffpatch,    "diffpatch",    ex_diffpatch,
  282.             EXTRA|FILE1|TRLBAR|MODIFY),
  283. EX(CMD_diffput,        "diffput",    ex_diffgetput,
  284.             RANGE|EXTRA|TRLBAR),
  285. EX(CMD_diffsplit,    "diffsplit",    ex_diffsplit,
  286.             EXTRA|FILE1|TRLBAR),
  287. EX(CMD_diffthis,    "diffthis",    ex_diffthis,
  288.             TRLBAR),
  289. EX(CMD_digraphs,    "digraphs",    ex_digraphs,
  290.             EXTRA|TRLBAR|CMDWIN),
  291. EX(CMD_djump,        "djump",    ex_findpat,
  292.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
  293. EX(CMD_dlist,        "dlist",    ex_findpat,
  294.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
  295. EX(CMD_doautocmd,    "doautocmd",    ex_doautocmd,
  296.             EXTRA|TRLBAR|CMDWIN),
  297. EX(CMD_doautoall,    "doautoall",    ex_doautoall,
  298.             EXTRA|TRLBAR|CMDWIN),
  299. EX(CMD_drop,        "drop",        ex_drop,
  300.             FILES|EDITCMD|NEEDARG|ARGOPT|TRLBAR),
  301. EX(CMD_dsearch,        "dsearch",    ex_findpat,
  302.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
  303. EX(CMD_dsplit,        "dsplit",    ex_findpat,
  304.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
  305. EX(CMD_edit,        "edit",        ex_edit,
  306.             BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
  307. EX(CMD_echo,        "echo",        ex_echo,
  308.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  309. EX(CMD_echoerr,        "echoerr",    ex_execute,
  310.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  311. EX(CMD_echohl,        "echohl",    ex_echohl,
  312.             EXTRA|TRLBAR|SBOXOK|CMDWIN),
  313. EX(CMD_echomsg,        "echomsg",    ex_execute,
  314.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  315. EX(CMD_echon,        "echon",    ex_echo,
  316.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  317. EX(CMD_else,        "else",        ex_else,
  318.             TRLBAR|SBOXOK|CMDWIN),
  319. EX(CMD_elseif,        "elseif",    ex_else,
  320.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  321. EX(CMD_emenu,        "emenu",    ex_emenu,
  322.             NEEDARG|EXTRA|TRLBAR|NOTRLCOM|RANGE|NOTADR|CMDWIN),
  323. EX(CMD_endif,        "endif",    ex_endif,
  324.             TRLBAR|SBOXOK|CMDWIN),
  325. EX(CMD_endfunction,    "endfunction",    ex_endfunction,
  326.             TRLBAR|CMDWIN),
  327. EX(CMD_endwhile,    "endwhile",    ex_endwhile,
  328.             TRLBAR|SBOXOK|CMDWIN),
  329. EX(CMD_enew,        "enew",        ex_edit,
  330.             BANG|TRLBAR),
  331. EX(CMD_ex,        "ex",        ex_edit,
  332.             BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
  333. EX(CMD_execute,        "execute",    ex_execute,
  334.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  335. EX(CMD_exit,        "exit",        ex_exit,
  336.             RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
  337. EX(CMD_file,        "file",        ex_file,
  338.             BANG|FILE1|TRLBAR),
  339. EX(CMD_files,        "files",    buflist_list,
  340.             BANG|TRLBAR|CMDWIN),
  341. EX(CMD_filetype,    "filetype",    ex_filetype,
  342.             EXTRA|TRLBAR|CMDWIN),
  343. EX(CMD_find,        "find",        ex_find,
  344.             RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
  345. EX(CMD_finish,        "finish",    ex_finish,
  346.             TRLBAR|SBOXOK|CMDWIN),
  347. EX(CMD_first,        "first",    ex_rewind,
  348.             EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
  349. EX(CMD_fixdel,        "fixdel",    do_fixdel,
  350.             TRLBAR|CMDWIN),
  351. EX(CMD_fold,        "fold",        ex_fold,
  352.             RANGE|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
  353. EX(CMD_foldclose,    "foldclose",    ex_foldopen,
  354.             RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
  355. EX(CMD_folddoopen,    "folddoopen",    ex_folddo,
  356.             RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM),
  357. EX(CMD_folddoclosed,    "folddoclosed",    ex_folddo,
  358.             RANGE|DFLALL|NEEDARG|EXTRA|NOTRLCOM),
  359. EX(CMD_foldopen,    "foldopen",    ex_foldopen,
  360.             RANGE|BANG|WHOLEFOLD|TRLBAR|SBOXOK|CMDWIN),
  361. EX(CMD_function,    "function",    ex_function,
  362.             EXTRA|BANG|CMDWIN),
  363. EX(CMD_global,        "global",    ex_global,
  364.             RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|CMDWIN),
  365. EX(CMD_goto,        "goto",        ex_goto,
  366.             RANGE|NOTADR|COUNT|TRLBAR|SBOXOK|CMDWIN),
  367. EX(CMD_grep,        "grep",        ex_make,
  368.             BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
  369. EX(CMD_grepadd,        "grepadd",    ex_make,
  370.             BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
  371. EX(CMD_gui,        "gui",        ex_gui,
  372.             BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN),
  373. EX(CMD_gvim,        "gvim",        ex_gui,
  374.             BANG|FILES|EDITCMD|ARGOPT|TRLBAR|CMDWIN),
  375. EX(CMD_help,        "help",        ex_help,
  376.             EXTRA|NOTRLCOM),
  377. EX(CMD_helpfind,    "helpfind",    ex_helpfind,
  378.             EXTRA|NOTRLCOM),
  379. EX(CMD_helptags,    "helptags",    ex_helptags,
  380.             NEEDARG|FILE1|TRLBAR|CMDWIN),
  381. EX(CMD_hardcopy,    "hardcopy",    ex_hardcopy,
  382.             RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG),
  383. EX(CMD_highlight,    "highlight",    ex_highlight,
  384.             BANG|EXTRA|TRLBAR|SBOXOK|CMDWIN),
  385. EX(CMD_hide,        "hide",        ex_hide,
  386.             BANG|EXTRA|NOTRLCOM),
  387. EX(CMD_history,        "history",    ex_history,
  388.             EXTRA|TRLBAR|CMDWIN),
  389. EX(CMD_insert,        "insert",    ex_append,
  390.             BANG|RANGE|TRLBAR|CMDWIN|MODIFY),
  391. EX(CMD_iabbrev,        "iabbrev",    ex_abbreviate,
  392.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  393. EX(CMD_iabclear,    "iabclear",    ex_abclear,
  394.             EXTRA|TRLBAR|CMDWIN),
  395. EX(CMD_if,        "if",        ex_if,
  396.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  397. EX(CMD_ijump,        "ijump",    ex_findpat,
  398.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
  399. EX(CMD_ilist,        "ilist",    ex_findpat,
  400.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
  401. EX(CMD_imap,        "imap",        ex_map,
  402.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  403. EX(CMD_imapclear,    "imapclear",    ex_mapclear,
  404.             EXTRA|TRLBAR|CMDWIN),
  405. EX(CMD_imenu,        "imenu",    ex_menu,
  406.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  407. EX(CMD_inoremap,    "inoremap",    ex_map,
  408.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  409. EX(CMD_inoreabbrev,    "inoreabbrev",    ex_abbreviate,
  410.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  411. EX(CMD_inoremenu,    "inoremenu",    ex_menu,
  412.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  413. EX(CMD_intro,        "intro",    ex_intro,
  414.             TRLBAR|CMDWIN),
  415. EX(CMD_isearch,        "isearch",    ex_findpat,
  416.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA|CMDWIN),
  417. EX(CMD_isplit,        "isplit",    ex_findpat,
  418.             BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
  419. EX(CMD_iunmap,        "iunmap",    ex_unmap,
  420.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  421. EX(CMD_iunabbrev,    "iunabbrev",    ex_abbreviate,
  422.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  423. EX(CMD_iunmenu,        "iunmenu",    ex_menu,
  424.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  425. EX(CMD_join,        "join",        ex_join,
  426.             BANG|RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN|MODIFY),
  427. EX(CMD_jumps,        "jumps",    ex_jumps,
  428.             TRLBAR|CMDWIN),
  429. EX(CMD_k,        "k",        ex_mark,
  430.             RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN),
  431. EX(CMD_list,        "list",        ex_print,
  432.             RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
  433. EX(CMD_last,        "last",        ex_last,
  434.             EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
  435. EX(CMD_language,    "language",    ex_language,
  436.             EXTRA|TRLBAR|CMDWIN),
  437. EX(CMD_lcd,        "lcd",        ex_cd,
  438.             FILE1|TRLBAR|CMDWIN),
  439. EX(CMD_lchdir,        "lchdir",    ex_cd,
  440.             FILE1|TRLBAR|CMDWIN),
  441. EX(CMD_left,        "left",        ex_align,
  442.             TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  443. EX(CMD_leftabove,    "leftabove",    ex_wrongmodifier,
  444.             NEEDARG|EXTRA|NOTRLCOM),
  445. EX(CMD_let,        "let",        ex_let,
  446.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  447. EX(CMD_lmap,        "lmap",        ex_map,
  448.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  449. EX(CMD_lmapclear,    "lmapclear",    ex_mapclear,
  450.             EXTRA|TRLBAR|CMDWIN),
  451. EX(CMD_lnoremap,    "lnoremap",    ex_map,
  452.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  453. EX(CMD_loadview,    "loadview",    ex_loadview,
  454.             FILE1|TRLBAR),
  455. EX(CMD_loadkeymap,    "loadkeymap",    ex_loadkeymap,
  456.             CMDWIN),
  457. EX(CMD_lunmap,        "lunmap",    ex_unmap,
  458.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  459. EX(CMD_ls,        "ls",        buflist_list,
  460.             BANG|TRLBAR|CMDWIN),
  461. EX(CMD_move,        "move",        ex_copymove,
  462.             RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
  463. EX(CMD_mark,        "mark",        ex_mark,
  464.             RANGE|WORD1|TRLBAR|SBOXOK|CMDWIN),
  465. EX(CMD_make,        "make",        ex_make,
  466.             BANG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
  467. EX(CMD_map,        "map",        ex_map,
  468.             BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  469. EX(CMD_mapclear,    "mapclear",    ex_mapclear,
  470.             BANG|TRLBAR|CMDWIN),
  471. EX(CMD_marks,        "marks",    do_marks,
  472.             EXTRA|TRLBAR|CMDWIN),
  473. EX(CMD_match,        "match",    ex_match,
  474.             EXTRA|CMDWIN),
  475. EX(CMD_menu,        "menu",        ex_menu,
  476.             RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  477. EX(CMD_menutranslate,    "menutranslate", ex_menutranslate,
  478.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  479. EX(CMD_messages,    "messages",    ex_messages,
  480.             TRLBAR|CMDWIN),
  481. EX(CMD_mkexrc,        "mkexrc",    ex_mkrc,
  482.             BANG|FILE1|TRLBAR|CMDWIN),
  483. EX(CMD_mksession,    "mksession",    ex_mkrc,
  484.             BANG|FILE1|TRLBAR),
  485. EX(CMD_mkvimrc,        "mkvimrc",    ex_mkrc,
  486.             BANG|FILE1|TRLBAR|CMDWIN),
  487. EX(CMD_mkview,        "mkview",    ex_mkrc,
  488.             BANG|FILE1|TRLBAR),
  489. EX(CMD_mode,        "mode",        ex_mode,
  490.             WORD1|TRLBAR|CMDWIN),
  491. EX(CMD_next,        "next",        ex_next,
  492.             RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
  493. EX(CMD_new,        "new",        ex_splitview,
  494.             BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
  495. EX(CMD_nmap,        "nmap",        ex_map,
  496.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  497. EX(CMD_nmapclear,    "nmapclear",    ex_mapclear,
  498.             EXTRA|TRLBAR|CMDWIN),
  499. EX(CMD_nmenu,        "nmenu",    ex_menu,
  500.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  501. EX(CMD_nnoremap,    "nnoremap",    ex_map,
  502.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  503. EX(CMD_nnoremenu,    "nnoremenu",    ex_menu,
  504.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  505. EX(CMD_noremap,        "noremap",    ex_map,
  506.             BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  507. EX(CMD_nohlsearch,    "nohlsearch",    ex_nohlsearch,
  508.             TRLBAR|SBOXOK|CMDWIN),
  509. EX(CMD_noreabbrev,    "noreabbrev",    ex_abbreviate,
  510.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  511. EX(CMD_noremenu,    "noremenu",    ex_menu,
  512.             RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  513. EX(CMD_normal,        "normal",    ex_normal,
  514.             RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN),
  515. EX(CMD_number,        "number",    ex_print,
  516.             RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
  517. EX(CMD_nunmap,        "nunmap",    ex_unmap,
  518.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  519. EX(CMD_nunmenu,        "nunmenu",    ex_menu,
  520.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  521. EX(CMD_open,        "open",        ex_ni,
  522.             TRLBAR),    /* not supported */
  523. EX(CMD_omap,        "omap",        ex_map,
  524.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  525. EX(CMD_omapclear,    "omapclear",    ex_mapclear,
  526.             EXTRA|TRLBAR|CMDWIN),
  527. EX(CMD_omenu,        "omenu",    ex_menu,
  528.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  529. EX(CMD_only,        "only",        ex_only,
  530.             BANG|TRLBAR),
  531. EX(CMD_onoremap,    "onoremap",    ex_map,
  532.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  533. EX(CMD_onoremenu,    "onoremenu",    ex_menu,
  534.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  535. EX(CMD_options,        "options",    ex_options,
  536.             TRLBAR),
  537. EX(CMD_ounmap,        "ounmap",    ex_unmap,
  538.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  539. EX(CMD_ounmenu,        "ounmenu",    ex_menu,
  540.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  541. EX(CMD_print,        "print",    ex_print,
  542.             RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
  543. EX(CMD_pclose,        "pclose",    ex_pclose,
  544.             BANG|TRLBAR),
  545. EX(CMD_perl,        "perl",        ex_perl,
  546.             RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK|CMDWIN),
  547. EX(CMD_perldo,        "perldo",    ex_perldo,
  548.             RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN),
  549. EX(CMD_pedit,        "pedit",    ex_pedit,
  550.             BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
  551. EX(CMD_pop,        "pop",        ex_tag,
  552.             RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
  553. EX(CMD_popup,        "popup",    ex_popup,
  554.             NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN),
  555. EX(CMD_ppop,        "ppop",        ex_ptag,
  556.             RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
  557. EX(CMD_preserve,    "preserve",    ex_preserve,
  558.             TRLBAR),
  559. EX(CMD_previous,    "previous",    ex_previous,
  560.             EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
  561. EX(CMD_promptfind,    "promptfind",    gui_mch_find_dialog,
  562.             EXTRA|NOTRLCOM|CMDWIN),
  563. EX(CMD_promptrepl,    "promptrepl",    gui_mch_replace_dialog,
  564.             EXTRA|NOTRLCOM|CMDWIN),
  565. EX(CMD_psearch,        "psearch",    ex_psearch,
  566.             BANG|RANGE|WHOLEFOLD|DFLALL|EXTRA),
  567. EX(CMD_ptag,        "ptag",        ex_ptag,
  568.             RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
  569. EX(CMD_ptNext,        "ptNext",    ex_ptag,
  570.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  571. EX(CMD_ptfirst,        "ptfirst",    ex_ptag,
  572.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  573. EX(CMD_ptjump,        "ptjump",    ex_ptag,
  574.             BANG|TRLBAR|WORD1),
  575. EX(CMD_ptlast,        "ptlast",    ex_ptag,
  576.             BANG|TRLBAR),
  577. EX(CMD_ptnext,        "ptnext",    ex_ptag,
  578.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  579. EX(CMD_ptprevious,    "ptprevious",    ex_ptag,
  580.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  581. EX(CMD_ptrewind,    "ptrewind",    ex_ptag,
  582.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  583. EX(CMD_ptselect,    "ptselect",    ex_ptag,
  584.             BANG|TRLBAR|WORD1),
  585. EX(CMD_put,        "put",        ex_put,
  586.             RANGE|WHOLEFOLD|BANG|REGSTR|TRLBAR|ZEROR|CMDWIN|MODIFY),
  587. EX(CMD_pwd,        "pwd",        ex_pwd,
  588.             TRLBAR|CMDWIN),
  589. EX(CMD_python,        "python",    ex_python,
  590.             RANGE|EXTRA|NEEDARG|CMDWIN),
  591. EX(CMD_pyfile,        "pyfile",    ex_pyfile,
  592.             RANGE|FILE1|NEEDARG|CMDWIN),
  593. EX(CMD_quit,        "quit",        ex_quit,
  594.             BANG|TRLBAR|CMDWIN),
  595. EX(CMD_quitall,        "quitall",    ex_quit_all,
  596.             BANG|TRLBAR),
  597. EX(CMD_qall,        "qall",        ex_quit_all,
  598.             BANG|TRLBAR|CMDWIN),
  599. EX(CMD_read,        "read",        ex_read,
  600.             BANG|RANGE|WHOLEFOLD|FILE1|ARGOPT|TRLBAR|ZEROR|CMDWIN|MODIFY),
  601. EX(CMD_recover,        "recover",    ex_recover,
  602.             BANG|FILE1|TRLBAR),
  603. EX(CMD_redo,        "redo",        ex_redo,
  604.             TRLBAR|CMDWIN),
  605. EX(CMD_redir,        "redir",    ex_redir,
  606.             BANG|FILES|TRLBAR|CMDWIN),
  607. EX(CMD_redraw,        "redraw",    ex_redraw,
  608.             BANG|TRLBAR|CMDWIN),
  609. EX(CMD_registers,    "registers",    ex_display,
  610.             EXTRA|NOTRLCOM|TRLBAR|CMDWIN),
  611. EX(CMD_resize,        "resize",    ex_resize,
  612.             TRLBAR|WORD1),
  613. EX(CMD_retab,        "retab",    ex_retab,
  614.             TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY),
  615. EX(CMD_return,        "return",    ex_return,
  616.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  617. EX(CMD_rewind,        "rewind",    ex_rewind,
  618.             EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
  619. EX(CMD_right,        "right",    ex_align,
  620.             TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  621. EX(CMD_rightbelow,    "rightbelow",    ex_wrongmodifier,
  622.             NEEDARG|EXTRA|NOTRLCOM),
  623. EX(CMD_runtime,        "runtime",    ex_runtime,
  624.             BANG|NEEDARG|FILES|TRLBAR|SBOXOK|CMDWIN),
  625. EX(CMD_ruby,        "ruby",        ex_ruby,
  626.             RANGE|EXTRA|NEEDARG|CMDWIN),
  627. EX(CMD_rubydo,        "rubydo",    ex_rubydo,
  628.             RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
  629. EX(CMD_rubyfile,    "rubyfile",    ex_rubyfile,
  630.             RANGE|FILE1|NEEDARG|CMDWIN),
  631. EX(CMD_rviminfo,    "rviminfo",    ex_viminfo,
  632.             BANG|FILE1|TRLBAR|CMDWIN),
  633. EX(CMD_substitute,    "substitute",    do_sub,
  634.             RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  635. EX(CMD_sNext,        "sNext",    ex_previous,
  636.             EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
  637. EX(CMD_sargument,    "sargument",    ex_argument,
  638.             BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
  639. EX(CMD_sall,        "sall",        ex_all,
  640.             RANGE|NOTADR|COUNT|TRLBAR),
  641. EX(CMD_saveas,        "saveas",    ex_write,
  642.             BANG|DFLALL|FILE1|ARGOPT|CMDWIN|TRLBAR),
  643. EX(CMD_sbuffer,        "sbuffer",    ex_buffer,
  644.             BANG|RANGE|NOTADR|BUFNAME|BUFUNL|COUNT|EXTRA|TRLBAR),
  645. EX(CMD_sbNext,        "sbNext",    ex_bprevious,
  646.             RANGE|NOTADR|COUNT|TRLBAR),
  647. EX(CMD_sball,        "sball",    ex_buffer_all,
  648.             RANGE|NOTADR|COUNT|TRLBAR),
  649. EX(CMD_sbfirst,        "sbfirst",    ex_brewind,
  650.             TRLBAR),
  651. EX(CMD_sblast,        "sblast",    ex_blast,
  652.             TRLBAR),
  653. EX(CMD_sbmodified,    "sbmodified",    ex_bmodified,
  654.             RANGE|NOTADR|COUNT|TRLBAR),
  655. EX(CMD_sbnext,        "sbnext",    ex_bnext,
  656.             RANGE|NOTADR|COUNT|TRLBAR),
  657. EX(CMD_sbprevious,    "sbprevious",    ex_bprevious,
  658.             RANGE|NOTADR|COUNT|TRLBAR),
  659. EX(CMD_sbrewind,    "sbrewind",    ex_brewind,
  660.             TRLBAR),
  661. EX(CMD_scriptnames,    "scriptnames",    ex_scriptnames,
  662.             TRLBAR|CMDWIN),
  663. EX(CMD_scriptencoding,    "scriptencoding", ex_scriptencoding,
  664.             WORD1|TRLBAR|CMDWIN),
  665. EX(CMD_scscope,        "scscope",    do_scscope,
  666.             EXTRA|NOTRLCOM|SBOXOK),
  667. EX(CMD_set,        "set",        ex_set,
  668.             TRLBAR|EXTRA|CMDWIN),
  669. EX(CMD_setfiletype,    "setfiletype",    ex_setfiletype,
  670.             TRLBAR|EXTRA|NEEDARG|CMDWIN),
  671. EX(CMD_setglobal,    "setglobal",    ex_set,
  672.             TRLBAR|EXTRA|CMDWIN),
  673. EX(CMD_setlocal,    "setlocal",    ex_set,
  674.             TRLBAR|EXTRA|CMDWIN),
  675. EX(CMD_sfind,        "sfind",    ex_splitview,
  676.             BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
  677. EX(CMD_sfirst,        "sfirst",    ex_rewind,
  678.             EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
  679. EX(CMD_shell,        "shell",    ex_shell,
  680.             TRLBAR|CMDWIN),
  681. EX(CMD_simalt,        "simalt",    ex_simalt,
  682.             NEEDARG|WORD1|TRLBAR|CMDWIN),
  683. EX(CMD_sign,        "sign",        ex_sign,
  684.             RANGE|NOTADR|EXTRA|CMDWIN),
  685. EX(CMD_silent,        "silent",    ex_wrongmodifier,
  686.             NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN),
  687. EX(CMD_sleep,        "sleep",    ex_sleep,
  688.             RANGE|NOTADR|COUNT|EXTRA|TRLBAR|CMDWIN),
  689. EX(CMD_slast,        "slast",    ex_last,
  690.             EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
  691. EX(CMD_smagic,        "smagic",    ex_submagic,
  692.             RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  693. EX(CMD_snext,        "snext",    ex_next,
  694.             RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
  695. EX(CMD_sniff,        "sniff",    ex_sniff,
  696.             EXTRA|TRLBAR),
  697. EX(CMD_snomagic,    "snomagic",    ex_submagic,
  698.             RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  699. EX(CMD_source,        "source",    ex_source,
  700.             BANG|FILE1|TRLBAR|SBOXOK|CMDWIN),
  701. EX(CMD_split,        "split",    ex_splitview,
  702.             BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
  703. EX(CMD_sprevious,    "sprevious",    ex_previous,
  704.             EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
  705. EX(CMD_srewind,        "srewind",    ex_rewind,
  706.             EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
  707. EX(CMD_stop,        "stop",        ex_stop,
  708.             TRLBAR|BANG|CMDWIN),
  709. EX(CMD_stag,        "stag",        ex_stag,
  710.             RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
  711. EX(CMD_startinsert,    "startinsert",    ex_startinsert,
  712.             BANG|TRLBAR|CMDWIN),
  713. EX(CMD_stjump,        "stjump",    ex_stag,
  714.             BANG|TRLBAR|WORD1),
  715. EX(CMD_stselect,    "stselect",    ex_stag,
  716.             BANG|TRLBAR|WORD1),
  717. EX(CMD_sunhide,        "sunhide",    ex_buffer_all,
  718.             RANGE|NOTADR|COUNT|TRLBAR),
  719. EX(CMD_suspend,        "suspend",    ex_stop,
  720.             TRLBAR|BANG|CMDWIN),
  721. EX(CMD_sview,        "sview",    ex_splitview,
  722.             NEEDARG|RANGE|NOTADR|BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
  723. EX(CMD_swapname,    "swapname",    ex_swapname,
  724.             TRLBAR|CMDWIN),
  725. EX(CMD_syntax,        "syntax",    ex_syntax,
  726.             EXTRA|NOTRLCOM|CMDWIN),
  727. EX(CMD_syncbind,    "syncbind",    ex_syncbind,
  728.             TRLBAR),
  729. EX(CMD_t,        "t",        ex_copymove,
  730.             RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY),
  731. EX(CMD_tNext,        "tNext",    ex_tag,
  732.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  733. EX(CMD_tag,        "tag",        ex_tag,
  734.             RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
  735. EX(CMD_tags,        "tags",        do_tags,
  736.             TRLBAR|CMDWIN),
  737. EX(CMD_tcl,        "tcl",        ex_tcl,
  738.             RANGE|EXTRA|NEEDARG|CMDWIN),
  739. EX(CMD_tcldo,        "tcldo",    ex_tcldo,
  740.             RANGE|DFLALL|EXTRA|NEEDARG|CMDWIN),
  741. EX(CMD_tclfile,        "tclfile",    ex_tclfile,
  742.             RANGE|FILE1|NEEDARG|CMDWIN),
  743. EX(CMD_tearoff,        "tearoff",    ex_tearoff,
  744.             NEEDARG|EXTRA|TRLBAR|NOTRLCOM|CMDWIN),
  745. EX(CMD_tfirst,        "tfirst",    ex_tag,
  746.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  747. EX(CMD_tjump,        "tjump",    ex_tag,
  748.             BANG|TRLBAR|WORD1),
  749. EX(CMD_tlast,        "tlast",    ex_tag,
  750.             BANG|TRLBAR),
  751. EX(CMD_tmenu,        "tmenu",    ex_menu,
  752.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  753. EX(CMD_tnext,        "tnext",    ex_tag,
  754.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  755. EX(CMD_topleft,        "topleft",    ex_wrongmodifier,
  756.             NEEDARG|EXTRA|NOTRLCOM),
  757. EX(CMD_tprevious,    "tprevious",    ex_tag,
  758.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  759. EX(CMD_trewind,        "trewind",    ex_tag,
  760.             RANGE|NOTADR|BANG|TRLBAR|ZEROR),
  761. EX(CMD_tselect,        "tselect",    ex_tag,
  762.             BANG|TRLBAR|WORD1),
  763. EX(CMD_tunmenu,        "tunmenu",    ex_menu,
  764.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  765. EX(CMD_undo,        "undo",        ex_undo,
  766.             TRLBAR|CMDWIN),
  767. EX(CMD_unabbreviate,    "unabbreviate",    ex_abbreviate,
  768.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  769. EX(CMD_unhide,        "unhide",    ex_buffer_all,
  770.             RANGE|NOTADR|COUNT|TRLBAR),
  771. EX(CMD_unlet,        "unlet",    ex_unlet,
  772.             BANG|EXTRA|NEEDARG|TRLBAR|SBOXOK|CMDWIN),
  773. EX(CMD_unmap,        "unmap",    ex_unmap,
  774.             BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  775. EX(CMD_unmenu,        "unmenu",    ex_menu,
  776.             BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  777. EX(CMD_update,        "update",    ex_update,
  778.             RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
  779. EX(CMD_vglobal,        "vglobal",    ex_global,
  780.             RANGE|WHOLEFOLD|EXTRA|DFLALL|CMDWIN),
  781. EX(CMD_version,        "version",    ex_version,
  782.             EXTRA|TRLBAR|CMDWIN),
  783. EX(CMD_verbose,        "verbose",    ex_wrongmodifier,
  784.             NEEDARG|RANGE|NOTADR|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  785. EX(CMD_vertical,    "vertical",    ex_wrongmodifier,
  786.             NEEDARG|EXTRA|NOTRLCOM),
  787. EX(CMD_visual,        "visual",    ex_edit,
  788.             BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
  789. EX(CMD_view,        "view",        ex_edit,
  790.             BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
  791. EX(CMD_vmap,        "vmap",        ex_map,
  792.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  793. EX(CMD_vmapclear,    "vmapclear",    ex_mapclear,
  794.             EXTRA|TRLBAR|CMDWIN),
  795. EX(CMD_vmenu,        "vmenu",    ex_menu,
  796.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  797. EX(CMD_vnoremap,    "vnoremap",    ex_map,
  798.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  799. EX(CMD_vnew,        "vnew",        ex_splitview,
  800.             BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
  801. EX(CMD_vnoremenu,    "vnoremenu",    ex_menu,
  802.             RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  803. EX(CMD_vsplit,        "vsplit",    ex_splitview,
  804.             BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
  805. EX(CMD_vunmap,        "vunmap",    ex_unmap,
  806.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  807. EX(CMD_vunmenu,        "vunmenu",    ex_menu,
  808.             EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  809. EX(CMD_write,        "write",    ex_write,
  810.             RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
  811. EX(CMD_wNext,        "wNext",    ex_wnext,
  812.             RANGE|WHOLEFOLD|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
  813. EX(CMD_wall,        "wall",        do_wqall,
  814.             BANG|TRLBAR|CMDWIN),
  815. EX(CMD_while,        "while",    ex_while,
  816.             EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  817. EX(CMD_winsize,        "winsize",    ex_winsize,
  818.             EXTRA|NEEDARG|TRLBAR),
  819. EX(CMD_wincmd,        "wincmd",    ex_wincmd,
  820.             NEEDARG|WORD1|RANGE|NOTADR),
  821. EX(CMD_windo,        "windo",    ex_listdo,
  822.             BANG|NEEDARG|EXTRA|NOTRLCOM),
  823. EX(CMD_winpos,        "winpos",    ex_winpos,
  824.             EXTRA|TRLBAR|CMDWIN),
  825. EX(CMD_wnext,        "wnext",    ex_wnext,
  826.             RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
  827. EX(CMD_wprevious,    "wprevious",    ex_wnext,
  828.             RANGE|NOTADR|BANG|FILE1|ARGOPT|TRLBAR),
  829. EX(CMD_wq,        "wq",        ex_exit,
  830.             RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
  831. EX(CMD_wqall,        "wqall",    do_wqall,
  832.             BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
  833. EX(CMD_wsverb,        "wsverb",    ex_wsverb,
  834.             EXTRA|NOTADR|NEEDARG),
  835. EX(CMD_wviminfo,    "wviminfo",    ex_viminfo,
  836.             BANG|FILE1|TRLBAR|CMDWIN),
  837. EX(CMD_xit,        "xit",        ex_exit,
  838.             RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
  839. EX(CMD_xall,        "xall",        do_wqall,
  840.             BANG|TRLBAR),
  841. EX(CMD_yank,        "yank",        ex_operators,
  842.             RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN),
  843. EX(CMD_z,        "z",        ex_z,
  844.             RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
  845.  
  846. /* commands that don't start with a lowercase letter */
  847. EX(CMD_bang,        "!",        ex_bang,
  848.             RANGE|WHOLEFOLD|BANG|FILES|CMDWIN),
  849. EX(CMD_pound,        "#",        ex_print,
  850.             RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
  851. EX(CMD_and,        "&",        do_sub,
  852.             RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  853. EX(CMD_star,        "*",        ex_at,
  854.             RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
  855. EX(CMD_lshift,        "<",        ex_operators,
  856.             RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN|MODIFY),
  857. EX(CMD_equal,        "=",        ex_equal,
  858.             RANGE|TRLBAR|CMDWIN),
  859. EX(CMD_rshift,        ">",        ex_operators,
  860.             RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN|MODIFY),
  861. EX(CMD_at,        "@",        ex_at,
  862.             RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN),
  863. EX(CMD_Next,        "Next",        ex_previous,
  864.             EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
  865. EX(CMD_Print,        "Print",    ex_print,
  866.             RANGE|WHOLEFOLD|COUNT|TRLBAR|CMDWIN),
  867. EX(CMD_X,        "X",        ex_X,
  868.             TRLBAR),
  869. EX(CMD_tilde,        "~",        do_sub,
  870.             RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  871.  
  872. #ifndef DO_DECLARE_EXCMD
  873. #ifdef FEAT_USR_CMDS
  874.     CMD_SIZE,        /* MUST be after all real commands! */
  875.     CMD_USER = -1,    /* User-defined command */
  876.     CMD_USER_BUF = -2    /* User-defined command local to buffer */
  877. #else
  878.     CMD_SIZE    /* MUST be the last one! */
  879. #endif
  880. #endif
  881. };
  882.  
  883. #define USER_CMDIDX(idx) ((int)(idx) < 0)
  884.  
  885. #ifndef DO_DECLARE_EXCMD
  886. typedef enum CMD_index cmdidx_T;
  887.  
  888. /*
  889.  * Arguments used for Ex commands.
  890.  */
  891. struct exarg
  892. {
  893.     char_u    *arg;        /* argument of the command */
  894.     char_u    *nextcmd;    /* next command (NULL if none) */
  895.     char_u    *cmd;        /* the name of the command (except for :make) */
  896.     char_u    **cmdlinep;    /* pointer to pointer of allocated cmdline */
  897.     cmdidx_T    cmdidx;        /* the index for the command */
  898.     long    argt;        /* flags for the command */
  899.     int        skip;        /* don't execute the command, only parse it */
  900.     int        forceit;    /* TRUE if ! present */
  901.     int        addr_count;    /* the number of addresses given */
  902.     linenr_T    line1;        /* the first line number */
  903.     linenr_T    line2;        /* the second line number or count */
  904.     char_u    *do_ecmd_cmd;    /* +command arg to be used in edited file */
  905.     linenr_T    do_ecmd_lnum;    /* the line number in an edited file */
  906.     int        append;        /* TRUE with ":w >>file" command */
  907.     int        usefilter;    /* TRUE with ":w !command" and ":r!command" */
  908.     int        amount;        /* number of '>' or '<' for shift command */
  909.     int        regname;    /* register name (NUL if none) */
  910.     int        force_ff;    /* forced 'fileformat' (index in cmd[]) */
  911. #ifdef FEAT_MBYTE
  912.     int        force_enc;    /* forced 'encoding' (index in cmd[]) */
  913. #endif
  914. #ifdef FEAT_USR_CMDS
  915.     int        useridx;    /* user command index */
  916. #endif
  917.     char_u    *errmsg;    /* returned error message */
  918.     char_u    *(*getline) __ARGS((int, void *, int));
  919.     void    *cookie;    /* argument for getline() */
  920. #ifdef FEAT_EVAL
  921.     struct condstack *cstack;    /* condition stack for ":if" etc. */
  922. #endif
  923. };
  924. #endif
  925.